//************************************************************************
/// <copyrigth>2024-2025 Corporation.All Rights Reserved</copyrigth>
/// <author>tangyingzhong</author>
/// <contact>tangyz114987@outlook.com</contact>
/// <version>v1.0.0</version>
/// <describe>
/// Handle string's encode
///</describe>
/// <date>2024/1/8</date>
///***********************************************************************
#ifndef ENCODING_H
#define ENCODING_H

#include <string>
#include "ModuleLoader/ModuleConfig.h"

namespace SystemTool
{
    class CLASS_ITEM Encoding
    {
    public:
        // UTF8 -> GBK
        static std::string UTF8ToGBK(std::string strUtf8);

        // UTF8 -> UTF16
        static std::wstring UTF8ToUTF16(std::string strUtf8);

        // UTF8 -> UTF32
        static std::wstring UTF8ToUTF32(std::string strUtf8);

        // GBK -> UTF8
        static std::string GBKToUTF8(std::string strGBK);

        // GBK -> UTF16
        static std::wstring GBKToUTF16(std::string strGBK);

        // GBK -> UTF32
        static std::wstring GBKToUTF32(std::string strGBK);

        // UTF16 -> UTF8
        static std::string UTF16ToUTF8(std::wstring strUtf16);

        // UTF16 -> GBK
        static std::string UTF16ToGBK(std::wstring strUtf16);

        // UTF16->UTF32
        static std::wstring UTF16ToUTF32(std::wstring strUtf16);

        // UTF32 ->UTF8
        static std::string UTF32ToUTF8(std::wstring strUtf32);

        // UTF32 -> GBK
        static std::string UTF32ToGBK(std::wstring strUtf32);

        // UTF32->UTF16
        static std::wstring UTF32ToUTF16(std::wstring strUtf32);
    };
}

#endif // ENCODING_H
